package eu.hellek.gba.server.TaskQueue;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.appengine.api.quota.QuotaService;
import com.google.appengine.api.quota.QuotaServiceFactory;
import com.google.appengine.api.taskqueue.DeferredTask;
import com.google.appengine.api.taskqueue.DeferredTaskContext;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import eu.hellek.gba.model.Line;
import eu.hellek.gba.server.dao.Dao;
import eu.hellek.gba.server.dao.ManagementDao;
import eu.hellek.gba.server.utils.Utils;
public class DeleteLineTask implements DeferredTask {
private static final long serialVersionUID = 1L;
private String payload;
public DeleteLineTask(String payload) {
this.payload = payload;
}
@Override
public void run() {
DeferredTaskContext.setDoNotRetry(true);
String functionName = "DeleteLineTask";
try {
String line = payload;
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getCpuTimeInMegaCycles();
Objectify ofy = Dao.getInstance().getObjectify();
Line l = Dao.getInstance().getLineByKey(new Key<Line>(Line.class, Long.parseLong(line)), ofy);
ManagementDao.getInstance().removeLine(l, ofy);
long end = qs.getCpuTimeInMegaCycles();
double cpuSeconds = qs.convertMegacyclesToCpuSeconds(end - start);
Logger.getLogger(functionName).log(Level.INFO, "deleted line with key " + line);
Logger.getLogger(functionName).log(Level.FINEST, functionName + ": " + cpuSeconds + " CPU seconds");
} catch (Exception e) {
Logger.getLogger(functionName).log(Level.SEVERE, functionName + ": " + e);
e.printStackTrace();
Utils.eMailError(e, functionName);
}
}
}